package ar.uade.edu.fain.ad.client.swing;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JTextArea;
import javax.swing.WindowConstants;

import ar.uade.edu.fain.ad.client.delegate.AdministracionDelegate;
import ar.uade.edu.fain.ad.client.delegate.DelegateFactory;
import ar.uade.edu.fain.ad.client.swing.util.ViewUtils;
import ar.uade.edu.fain.ad.common.transfer.NotaDevolucionVO;

public class ImpresionNotaDevolucionVW extends javax.swing.JFrame {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public ImpresionNotaDevolucionVW() {
		super();
		initGUI();
	}

	private void initGUI() {
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			getContentPane().setLayout(null);
			final JTextArea resultadoArea = new JTextArea();
			getContentPane().add(resultadoArea);
			resultadoArea.setBounds(12, 50, 500, 200);
			final JButton submit = new JButton(
					"Mostrar las notas de devolucion");
			getContentPane().add(submit);
			submit.setBounds(50, 260, 200, 50);
			submit.addActionListener(new ActionListener() {
				@Override
				public void actionPerformed(ActionEvent arg0) {
					final DelegateFactory delegateFactory = ViewUtils.get()
							.getDelegateFactory();
					final AdministracionDelegate delegate = delegateFactory
							.createAdministracionDelegate();
					try {
						final List<NotaDevolucionVO> devoluciones = delegate
								.buscarDevoluciones();
						final String texto = generarTextoResultadoDe(devoluciones);
						resultadoArea.setText(texto);
					} catch (Exception e) {
						resultadoArea.setText(e.getClass().getSimpleName()
								+ ": " + e.getMessage());
					}
				}

				private String generarTextoResultadoDe(
						List<NotaDevolucionVO> devoluciones) {
					final StringBuilder out = new StringBuilder();
					for (NotaDevolucionVO devolucionVO : devoluciones) {
						out.append("######################\n");
						out.append("# Nota de Devolucion #\n");
						out.append("######################\n");
						out.append("#\n");
						out.append("# ID: " + devolucionVO.getId());
						out.append("#\n");
						out.append("# Cantidad a devolver: " + 
								devolucionVO.getCantidad());
						out.append("#\n");
						out.append("# Item Orden de Compra ID: " + 
								devolucionVO.getItemOrdenCompra().getId());
						out.append("\n");
						out.append("#\n");
						out.append("######################\n");
						out.append("\n");
					}
					return out.toString();
				}
			});
			pack();
			this.setSize(552, 350);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}
